#ifndef FSPHENIX_PARTICLE_H
#define FSPHENIX_PARTICLE_H

#include <TObject.h>
#include <TRef.h>
#include <TRefArray.h>

class TParticle;

class sPHENIX_Particle : public TObject
{
  public:
    sPHENIX_Particle(Int_t id, TParticle* particle);
    sPHENIX_Particle(Int_t id, TParticle* particle, sPHENIX_Particle* mother);
    sPHENIX_Particle();
    virtual ~sPHENIX_Particle();

    // methods
    void SetMother(sPHENIX_Particle* particle);
    void AddDaughter(sPHENIX_Particle* particle);
    virtual void Print(Option_t* option = "") const;
    void PrintDaughters() const;

    // get methods  
    Int_t         GetID() const;
    TParticle*    GetParticle() const;
    sPHENIX_Particle* GetMother() const;
    Int_t         GetNofDaughters() const;
    sPHENIX_Particle* GetDaughter(Int_t i) const;

  private:
    // data members
    Int_t       fID;        ///< The particle Id
    TParticle*  fParticle;  ///< The particle definition
    TRef        fMother;    ///< The particle mother 
    TRefArray   fDaughters; ///< The particle daughters

    ClassDef(sPHENIX_Particle,1) // Extended TParticle
};

#endif
